As the network traffic continues its rapid growth and more and more developers introduce network products and solutions, there is an increasing number of application programs (processes) that use a predefined well-known network port. Some of these application programs need to listen on a single well-known predefined Transmission Control Protocol (TCP) and/or Transport Layer Security (TLS) and/or User Datagram Protocol (UDP) port number, for example. Session Initiation Protocol (SIP) and H.323 Protocol are examples of such application programs (processes) that need to listen on such a well-known TCP or UDP port number. H.323 Protocol application programs listen on TCP port number 1720, while SIP application can listen to TCP or UDP port number 5060, or over port 5061 for encrypted video and/or audio conferencing session based on TLS/TCP transport protocol, for example. In a common architecture of videoconferencing networks, SIP clients are connected via a SIP proxy to a Multipoint Control Unit (MCU). The transport protocol between the SIP proxy and the MCU can be configured by an administrator. There are some cases in which more than one transport protocol can be used between the proxy and the MCU.
Different types of network devices may be able to achieve better scalability, robustness and load balancing if they have the ability for two or more instances of an application program (process) to run simultaneously using the same specific port number. An example of such a network device is an MCU. An MCU is a conference controlling entity located in a node of a network or in a terminal. An MCU receives and processes, according to certain criteria, a plurality of media, signaling, and control channels from access ports and distributes these to connected channels. Examples of MCUs include the MGC-100, and RMX 2000 (Polycom Inc.). MCUs can be composed of two logical units: a media controller (MC) and a media processor (MP). A more thorough definition of an endpoint (terminal) and an MCU can be found in the International Telecommunication Union (“ITU”) standards, such as but not limited to the H.320, H.324, and H.323 standards. The MCU is required to handle a plurality of sessions between a plurality of users (clients) simultaneously. Thus, MCU may require using simultaneously more than one instance of the same application program, H.323 for example, for the different sessions. Unfortunately the Operating System (OS) has a port listening limitation in that only a single application/application instance (process) can listen on a specific port number on the same IP host. In this disclosure the terms application, application program and process may be used interchangeably.
H.323 is an International Telecommunications Union (ITU) standard that provides specification for computers, equipment, and services for multimedia communication over packet based networks that defines how real-time audio, video and data information is transmitted. H.323 is commonly used in VoIP, Internet Telephony, and IP-based videoconferencing. Users can connect with other users over the Internet and use varying products that support H.323. This standard includes the Internet Engineering Task Force (IETF) Real-Time Protocol (RTP) and Real-Time Control Protocol (RTCP), with additional protocols for call signaling, and, data and audiovisual communications.
IETF SIP is an application-layer control protocol, a signaling protocol for Internet Telephony. SIP can establish sessions for features such as audio/videoconferencing, interactive gaming, and call forwarding to be deployed over IP networks, thus enabling service providers to integrate basic IP telephony services with Internet, e-mail, and chat services. In addition to user authentication, redirect, and registration services, SIP Server supports traditional telephony features such as personal mobility, routing, and call forwarding based on the geographical location of the person being called.
There are techniques that provide the ability for an application program to listen for incoming calls on multiple ports. But such a system requires adding in the Operating System (OS) transport components and Network components (not always possible). Such system also may require predefining strings that a user (client) will need to transmit in order to connect to that application. A user (client) that does not know the predefined string will not be able to refer and connect to such an application program. Furthermore, such system will not enable a plurality of instances of the same application to listen on the same port. Other techniques provide the ability to dispatch connection services (multiple different application instances) to listen on a single static port. Those methods require predefining a unique ID for each application/instance and notifying the clients of these unique IDs or else the clients will not be served. In this disclosure the terms user and client may be used interchangeably.
Therefore, there is a need in the art for a method and a system that will enable multiple application instances to operate simultaneously using the same listening port. It is desirable that such a method and system would not require that clients be informed of a predefined unique ID or special strings to be served. It is also desirable that no changes in the OS level would be required.